
section .data
str_c_lib: db "jjjjjjjjjjjjjj", 0xa
str_c_lib_len equ $ - str_c_lib

str_syscall: db "aaaaaa", 0xa
str_syscall_len equ $ - str_syscall

section .text
global _start
_start:
;---------- 方式1：模拟C的库函数write，进行调用 ----------
    push str_c_lib_len
    push str_c_lib
    push 1

    call simu_write
    add esp, 12

;---------- 方式2：跨过系统函数，直接进行系统调用 ----------
    mov eax, 4 ; 功能号为 4，表示进行 write 系统调用
    mov ebx, 1
    mov ecx, str_syscall
    mov edx, str_syscall_len
    int 0x80

;---------- 退出程序 ----------
    mov eax, 1 ; 功能号为 1，表示 exit
    int 0x80

;---------- 模拟C的库函数 write ----------
simu_write:
    push ebp
    mov ebp, esp
    mov eax, 4
    mov ebx, [ebp + 8]
    mov ecx, [ebp + 12]
    mov edx, [ebp + 16]
    int 0x80
    pop ebp
    ret
